package killgohorse.trapezio;

import killgohorse.FiguraGeometrica;
import killgohorse.FiguraGeometricaException;

/**
 *
 * @author Leo Antunes
 * @author Roberta Almeida
 */
public class Trapezio extends FiguraGeometrica {
    private int baseMaior;
    private int baseMenor;
    private int altura;

    public Trapezio(int baseMaior, int baseMenor, int altura) throws FiguraGeometricaException {
        preCond_ValorMaiorQueZero(baseMaior, "Base maior");
        preCond_ValorMaiorQueZero(baseMenor, "Base menor");
        preCond_ValorMaiorQueZero(altura, "Altura");
        if (baseMaior <= baseMenor)
            throw new FiguraGeometricaException("Base maior não pode ser menor ou igual a base menor.");

        this.baseMaior = baseMaior;
        this.baseMenor = baseMenor;
        this.altura = altura;
    }

    public int getAltura() {
        return altura;
    }

    public void setAltura(int altura) {
        this.altura = altura;
    }

    public int getBaseMaior() {
        return baseMaior;
    }

    public void setBaseMaior(int baseMaior) {
        this.baseMaior = baseMaior;
    }

    public int getBaseMenor() {
        return baseMenor;
    }

    public void setBaseMenor(int baseMenor) {
        this.baseMenor = baseMenor;
    }

    @Override
    public double area() {
        return ((double)(baseMaior + baseMenor) * altura) / 2;
    }

    @Override
    public double perimetro() {
        double lado = Math.sqrt(Math.pow((double)(baseMaior - baseMenor)/2, 2) + Math.pow(altura, 2));
        return baseMaior + baseMenor + (2 * lado);
    }
}
